package com.xdcplus.web.service;

import com.xdcplus.mp.service.BaseService;
import com.xdcplus.pager.vo.PageVO;
import com.xdcplus.web.common.pojo.bo.OpeJobTaskAlarmCodeSettingBO;
import com.xdcplus.web.common.pojo.dto.task.JobTaskEapDTO;
import com.xdcplus.web.common.pojo.entity.OpeJobTaskRecord;
import com.xdcplus.web.common.pojo.dto.OpeJobTaskRecordDTO;
import com.xdcplus.web.common.pojo.dto.OpeJobTaskRecordFilterDTO;
import com.xdcplus.web.common.pojo.vo.OpeJobTaskRecordVO;

import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.util.List;


/**
 * (OpeJobTaskRecord)表服务接口层
 *
 * @author Zhecheng.Ren
 * @since 2024-10-30 14:52:12
 */
public interface OpeJobTaskRecordService extends BaseService<OpeJobTaskRecord, OpeJobTaskRecord, OpeJobTaskRecordVO> {

    /**
     * 添加(OpeJobTaskRecord)
     *
     * @param opeJobTaskRecordDTO (OpeJobTaskRecordDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOpeJobTaskRecord(OpeJobTaskRecordDTO opeJobTaskRecordDTO);

    /**
     * 修改(OpeJobTaskRecord)
     *
     * @param opeJobTaskRecordDTO (OpeJobTaskRecordDTO)
     * @return {@link Boolean} 是否成功
     */
    Boolean updateOpeJobTaskRecord(OpeJobTaskRecordDTO opeJobTaskRecordDTO);

    /**
     * 批量保存或更新(OpeJobTaskRecord)
     *
     * @param opeJobTaskRecordList (OpeJobTaskRecordList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatch(List<OpeJobTaskRecord> opeJobTaskRecordList);

    /**
     * 批量保存或更新(OpeJobTaskRecordDTOList)
     *
     * @param opeJobTaskRecordDTOList (OpeJobTaskRecordDTOList)
     * @return {@link Boolean} 是否成功
     */
    Boolean saveOrUpdateBatchByDTOList(List<OpeJobTaskRecordDTO> opeJobTaskRecordDTOList);

    /**
     * 删除(OpeJobTaskRecord)
     *
     * @param id (OpeJobTaskRecord)主键
     * @return {@link Boolean} 是否成功
     */
    Boolean deleteOpeJobTaskRecordLogical(Long id);
    
    Boolean deleteOpeJobTaskRecordByIds(String ids);

    /**
     * 查询(OpeJobTaskRecord)
     *
     * @param opeJobTaskRecordFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<OpeJobTaskRecordVO>} 状态信息
     */
    List<OpeJobTaskRecordVO> queryOpeJobTaskRecordVOList(OpeJobTaskRecordFilterDTO opeJobTaskRecordFilterDTO);

    /**
     * 查询(OpeJobTaskRecord)
     *
     * @param opeJobTaskRecordFilterDTO 过程状态过滤DTO
     * @return {@link PageVO<OpeJobTaskRecordVO>} 状态信息
     */
    PageVO<OpeJobTaskRecordVO> queryOpeJobTaskRecord(OpeJobTaskRecordFilterDTO opeJobTaskRecordFilterDTO);

    /**
     * 查询一个
     *
     * @param id (OpeJobTaskRecord)主键
     * @return {@link OpeJobTaskRecordVO} (OpeJobTaskRecord)信息
     */
    OpeJobTaskRecordVO queryOpeJobTaskRecordById(Long id);

    List<OpeJobTaskAlarmCodeSettingBO> queryOpeJobTaskAlarmCodeSetting(String toolCode);

    void saveEapAlarm(JobTaskEapDTO jobTaskEapDTO);

    void exportData(OpeJobTaskRecordFilterDTO opeJobTaskRecordFilterDTO, HttpServletResponse response) throws UnsupportedEncodingException;
}
